package views; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import models.*; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; public class MainFrame extends JFrame{ private JPanel contentPanel; private JTextField search = new JTextField(); private JButton searchButton = new JButton("Search"); private JButton add = new JButton("Add"); private JButton removeKey = new JButton("Remove Key"); private JButton removeDefinition = new JButton("Remove Defintion"); private JButton define = new JButton("Define"); private JButton populate = new JButton("Populate"); private JButton update = new JButton("Update"); private Object[][] data1; private String[] columns1 = { "Word" }; private JTable table1; private Object[][] data2; private String[] columns2 = { "Definition" }; private JTable table2; private JScrollPane scrollPane1; private JScrollPane scrollPane2; public MainFrame(String title){ setTitle(title); setSize(500, 600); setLayout(new BorderLayout()); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); contentPanel = new JPanel(); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPanel.setBackground(Color.red); search.setPreferredSize(new Dimension(100, 20)); contentPanel.add(search); contentPanel.add(searchButton); contentPanel.add(add); contentPanel.add(removeKey); contentPanel.add(removeDefinition); contentPanel.add(define); contentPanel.add(update); contentPanel.add(populate); add(contentPanel, BorderLayout.CENTER); this.setVisible(true); } public void refresh(){ contentPanel.removeAll(); contentPanel.revalidate(); this.repaint(); contentPanel.add(search); contentPanel.add(searchButton); contentPanel.add(add); contentPanel.add(removeKey); contentPanel.add(removeDefinition); contentPanel.add(define); contentPanel.add(update); contentPanel.add(populate); contentPanel.revalidate(); this.repaint(); } public void constructTable1(HashMap<DictionaryEntry, ArrayList<DictionaryEntry>> searchResult){ refresh(); data1 = new Object[searchResult.size()][1]; int index = 0; for (DictionaryEntry de : searchResult.keySet()) { data1[index][0] = de.toString(); index++; } DefaultTableModel tableModel = new DefaultTableModel(data1, columns1) { @Override public boolean isCellEditable(int row, int column) { return false; } }; table1 = new JTable(tableModel); table1.setPreferredScrollableViewportSize(new Dimension(400, 200)); scrollPane1 = new JScrollPane(table1); contentPanel.add(scrollPane1); } public void constructTable2(DictionaryEntry de){ refresh(); contentPanel.add(scrollPane1); data2 = new Object[Dictionary.getInstance().getEntries().get(de).size()][1]; int index = 0; for (DictionaryEntry de2 : Dictionary.getInstance().getEntries().get(de)) { data2[index][0] = de2.toString(); index++; } DefaultTableModel tableModel = new DefaultTableModel(data2, columns2) { @Override public boolean isCellEditable(int row, int column) { return false; } }; table2 = new JTable(tableModel); table2.setPreferredScrollableViewportSize(new Dimension(400, 200)); scrollPane2 = new JScrollPane(table2); contentPanel.add(scrollPane2); } public void setAddButtonActionListener(ActionListener a) { add.addActionListener(a); } public void setSearchButtonActionListener(ActionListener a) { searchButton.addActionListener(a); } public void setRemoveKeyButtonActionListener(ActionListener a) { removeKey.addActionListener(a); } public void setRemoveDefinitionButtonActionListener(ActionListener a) { removeDefinition.addActionListener(a); } public void setDefineButtonActionListener(ActionListener a) { define.addActionListener(a); } public void setUpdateButtonActionListener(ActionListener a) { update.addActionListener(a); } public void setPopulateButtonActionListener(ActionListener a) { populate.addActionListener(a); } public JTextField getSearch() { return search; } public JTable getTable1() { return table1; } public JTable getTable2() { return table2; } public JButton getDefine() { return define; } }